package main

import "fmt"

func main() {
	// 数组需要固定长度
	//a := [3]int{1, 2, 3}
	//a[1] = 1
	// 切片却不一定需要
	// s3 := make([]string, 10, 20)
	// s3[1] = "aaa"
	//fmt.Println(a)
	// fmt.Println(s3)

	// map
	//b := map[string]string{"a": "b", "c": "d"}
	// 取值，并判断是否存在该键
	//mm, ok := b["a"]
	//fmt.Println(b)
	//fmt.Println(mm)
	//fmt.Println(ok)

	// 可用索引表达式取出字典中的值：
	//nn := b["c"]
	//fmt.Println(nn)

	// 可以用索引表达式赋值或添加新值:
	//b["a"] = "f"
	//b["e"] = "g"
	//fmt.Println(b)

	// 从字典中删除键值对的方法非常简单，仅仅是调用内建函数delete：
	//delete(b, "a")
	//fmt.Println(b)

	defer_test()

}

func defer_test() {
	fmt.Println("defer")
	defer func() {
		if err := recover(); err != nil {
			fmt.Println("recover")
		}
	}()
	panic_test()
}

func panic_test() {
	fmt.Println("panic")
	panic("panic")
}
